// HJ26 字符串排序
// https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
// 编写一个程序，将输入字符串中的字符按如下规则排序。
// 规则 1 ：英文字母从 A 到 Z 排列，不区分大小写。
// 如，输入： Type 输出： epTy
// 规则 2 ：同一个英文字母的大小写同时存在时，按照输入顺序排列。
// 如，输入： BabA 输出： aABb
// 规则 3 ：非英文字母的其它字符保持原来的位置。
// 如，输入： By?e 输出： Be?y
//  英文字母从 A 到 Z 排列，不区分大小写。
//  同一个英文字母的大小写同时存在时，按照输入顺序排列。
//  解：遍历字母表，字串中在字母放入字母表。
//  isalpha  'a' > 'A'
#include <iostream>
#include <string>
#include <vector>
int main() {
  std::string strLine = "A Famous Saying: Much Ado About Nothing (2012/8).";
  std::cin >> strLine;
  std::vector<char> vecLetter;
  std::string strLineNew;
  // 英文字母从 A 到 Z 排列，不区分大小写
  for (char cLetter = 'A'; cLetter <= 'Z'; cLetter++) {
    for (auto c : strLine) {
      if (c == cLetter || c == cLetter + 'a' - 'A') {
        vecLetter.push_back(c);
      }
    }
  }
  for (auto c : vecLetter) {
    // printf("%c ", c);
  }
  int iVec = 0;
  for (auto c : strLine) {
    if (isalpha(c)) {
      strLineNew += vecLetter[iVec];
      iVec++;
    } else {
      strLineNew += c;
    }
  }
  printf("%s\n", strLineNew.c_str());
  return 0;
}